﻿use DangKyMonHocHocPhi;
go
Create PROCEDURE [dbo].[GetAllSemesterFromDatabase]
AS
BEGIN
	Select * from HOCKY
	END
	RETURN
GO

CREATE PROCEDURE [dbo].[GetSemesterByIdFromDatabase](@MaHocKy nvarchar(20))
AS
EGIN
	Select * from HOCKY where MaHocKy = @MaHocKy
	END
	RETURN
GO

CREATE PROCEDURE [dbo].[InsertSemesterToDatabase](
	@MaHocky nvarchar(20),
	@TenHocky nvarchar(255))
AS
BEGIN
	Insert into HOCKY values (@MaHocky, @TenHocky)
	END
	RETURN
GO

CREATE PROCEDURE [dbo].[UpdateSemesterToDatabase](
	@MaHocKy nvarchar(20),
	@TenHockY nvarchar(255))
AS
BEGIN
	Update HOCKY Set TenHocKy= @TenHocKy where MaHocKy = @MaHocKy;
	END
	RETURN
GO

CREATE PROCEDURE [dbo].[DeleteSemesterFromDatabase] (@MaHocKy nvarchar(20))
AS
BEGIN
	Delete HOCKY where MaHocKy = @MaHocKy;
	END
	RETURN
GO

CREATE TRIGGER [dbo].[AutoIncrementSemesterId]
ON [dbo].[HOCKY]
FOR INSERT
AS
BEGIN
DECLARE @MAXValue VARCHAR(15),@NEWValue VARCHAR(15),@NEW_ID VARCHAR(15), @OLD_ID VARCHAR(15);
--Lấy giá trị lớn nhất 
SELECT @MAXValue=MAX(MaHocKy) FROM HOCKY
--Lấy giá trị ID được chèn vào từ bên ngoài (bất kì, không quan trọng)
select @OLD_ID = MaHocKy from INSERTED
--Lấy phần chuỗi số đằng sau TL rồi tăng lên 1 đơn vị
SET @NEWValue= REPLACE(@MaxValue,'HK','')+1
-- Kiểm tra NEWValue nếu < 100
-- Nếu <100, thêm vào số 0 sao cho NEWValue có độ dài = 9
SET @NEW_ID = 'HK'+
    CASE
       WHEN LEN(@NEWValue)<7
          THEN REPLICATE('0',7-LEN(@newValue))
          ELSE ''
       END +
       @NEWValue
--Thay thế giá trị Id từ bên ngoài bằng Id vừa được tạo
UPDATE HOCKY SET MaHocKy = @NEW_ID WHERE MaHocKy = @OLD_ID
END
GO